#pragma once

#include "CWideningSink.h"
class CStrokeBoundsSink :
	public CWideningSink
{

public: 
	CStrokeBoundsSink();
	virtual ~CStrokeBoundsSink();
	virtual HRESULT StartWith(const struct XPOINTF * ptOffset);
	virtual HRESULT SetCurrentPoints(const struct XPOINTF * pPoints);
	virtual HRESULT QuadTo(const struct XPOINTF * ptOffset, const struct XPOINTF & vecSeg, const struct XPOINTF & ptSpine, const struct XPOINTF & ptSpinePrev);
	virtual HRESULT QuadTo(const struct XPOINTF *);
	virtual HRESULT CurveWedge(enum _RAIL_SIDE side, const struct XPOINTF & ptBez_1, const struct XPOINTF & ptBez_2, const struct XPOINTF & ptBez_3);
	virtual HRESULT PolylineWedge(enum _RAIL_SIDE side, XUINT32 count, const struct XPOINTF * pPoints);
	virtual HRESULT DoInnerCorner(enum _RAIL_SIDE side, const struct XPOINTF & ptCenter, const struct XPOINTF * ptOffset);
	virtual HRESULT SwitchSides();
	virtual HRESULT BezierCap(const struct XPOINTF & ptStart, const struct XPOINTF & pt0_1, const struct XPOINTF & pt0_2, const struct XPOINTF & ptMid, const struct XPOINTF & pt1_1, const struct XPOINTF & pt1_2, const struct XPOINTF & ptEnd);
	virtual HRESULT CapTriangle(const struct XPOINTF & ptStart, const struct XPOINTF & ptApex, const struct XPOINTF & ptEnd);
	void GetBounds(struct XRECTF_RB * pBounds);
protected: 
	struct XRECTF_RB m_bounds;
	struct XPOINTF m_currentPoints[0x2];



};